﻿// --------------------------------------------------------------------------------------------------------------------
// <copyright file="PieceSpeciality.cs" company="">
//   
// </copyright>
//  <summary>
//   The piece speciality enum.
// </summary>
// --------------------------------------------------------------------------------------------------------------------
namespace Shatranj
{
    using System;

    /// <summary>
    /// The piece speciality enum.
    /// </summary>
    [Flags]
    public enum PieceSpecialityEnum
    {
        /// <summary>
        /// The none.
        /// </summary>
        None = 0, 

        /// <summary>
        /// The can jump over.
        /// </summary>
        CanJumpOver = 1, 

        /// <summary>
        /// The is promotable.
        /// </summary>
        IsPromotable = 2, 

        /// <summary>
        /// The en passant.
        /// </summary>
        EnPassant = 4, 

        /// <summary>
        /// The capture across.
        /// </summary>
        CaptureAcross = 8, 

        /// <summary>
        /// The initial max step allowed.
        /// </summary>
        InitialMaxStepAllowed = 16
    }

    /// <summary>
    /// The piece speciality.
    /// </summary>
    public class PieceSpeciality
    {
        #region Public Properties

        /// <summary>
        /// Gets or sets a value indicating whether can capture across.
        /// </summary>
        public bool CanCaptureAcross { get; set; }

        /// <summary>
        /// Gets or sets a value indicating whether can jump over.
        /// </summary>
        public bool CanJumpOver { get; set; }

        /// <summary>
        /// Gets or sets a value indicating whether enpassant.
        /// </summary>
        public bool Enpassant { get; set; }

        /// <summary>
        /// Gets or sets the initial max step.
        /// </summary>
        public int InitialMaxStep { get; set; }

        /// <summary>
        /// Gets or sets a value indicating whether initial max step allowed.
        /// </summary>
        public bool InitialMaxStepAllowed { get; set; }

        /// <summary>
        /// Gets or sets a value indicating whether is promotable.
        /// </summary>
        public bool IsPromotable { get; set; }

        #endregion
    }
}